﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Entidad
{
    public class EntMensualidad : IEntidad
    {
        #region Constructor
        public EntMensualidad() { }
        #endregion


        private int idMensualidad = 0;
        public int IdMensualidad
        {
            get { return idMensualidad; }
            set { idMensualidad = value; }
        }


        private string _Concepto;
        public string Concepto
        {
            get { return _Concepto; }
            set { _Concepto = value; }
        }

     
        public string NombreCobrador
        {
            get { return usuarioSist.NombreCobrador; }
           
        }


        private EntUsuarioSist usuarioSist = new EntUsuarioSist();
        public EntUsuarioSist UsuarioSist
        {
            get { return usuarioSist; }
            set { usuarioSist = value; }
        }
        private EntAlumno alumno = new EntAlumno();
        public EntAlumno Alumno
        {
            get { return alumno; }
            set { alumno = value; }
        }


     
        public string NombreUsuario
        {
            get { return alumno.Nombre; }
            set { alumno.Nombre = value; }
        }



   

        private EntMonto monto = new EntMonto();
        public EntMonto Monto
        {
            get { return monto; }
            set { monto = value; }
        }



      
        public decimal CantidadAPagar
        {
            get
            {
                if (Concepto == "Inscripcion") return monto.Inscripcion;
                else return monto.MontoMensual;
            }
        }


        public bool ConRecargo
        {
            get
            {
                if (fechaMensualidad.Month < DateTime.Now.Month || (fechaMensualidad.Month == DateTime.Now.Month && DateTime.Now.Day > 10) || (fechaMensualidad.Month == 12  && DateTime.Now.Month < 12)) return true;
                else return false;
            }
        }
        public bool ConPagoOportuno
        {
            get
            {
                if (fechaMensualidad.Month < DateTime.Now.Month || (fechaMensualidad.Month == DateTime.Now.Month && DateTime.Now.Day <= 5) || (fechaMensualidad.Month == 12 && DateTime.Now.Month < 12)) return true;
                else return false;
            }
        }


        private DateTime fechaMensualidad = new DateTime();
        public DateTime FechaMensualidad
        {
            get { return fechaMensualidad; }
            set { fechaMensualidad = value; }
        }



        public string DescFechaPago
        {
            get {
                if (string.Format("{0:dd-MMM-yyyy}", fechaPago) == "01-ene-0001") return "No Pagado";
                else return string.Format("{0:dd-MMM-yyyy}", fechaPago);
            }
        }




       
        public string MesMensualidad
        {
            get { if (fechaMensualidad.Month == 1) return "Enero"; else if (fechaMensualidad.Month == 2) return "Febrero"; else if (fechaMensualidad.Month == 3) return "Marzo"; else if (fechaMensualidad.Month == 4) return "Abril"; else if (fechaMensualidad.Month == 5) return "Mayo"; else if (fechaMensualidad.Month == 6) return "Junio"; else if (fechaMensualidad.Month == 7) return "Julio"; else if (fechaMensualidad.Month == 8) return "Agosto"; else if (fechaMensualidad.Month == 9) return "Septiembre"; else if (fechaMensualidad.Month == 10) return "Octubre"; else if (fechaMensualidad.Month == 11) return "Noviembre"; else if (fechaMensualidad.Month == 12) return "Diciembre"; else return ""; }
           
        }




        private DateTime fechaPago = new DateTime();
        public DateTime FechaPago
        {
            get { return fechaPago; }
            set { fechaPago = value; }
        }
        private decimal pagoTotalRealizado = 0;
        public decimal PagoTotalRealizado
        {
            get { return pagoTotalRealizado; }
            set { pagoTotalRealizado = value; }
        }



        private string _PagoOportunoPag;
        public string PagoOportunoPag
        {
            get { return _PagoOportunoPag; }
            set { _PagoOportunoPag = value; }
        }

        private string _MontoPag;
        public string MontoPag
        {
            get { return _MontoPag; }
            set { _MontoPag = value; }
        }

        private string _BecaPag;
        public string BecaPag
        {
            get { return _BecaPag; }
            set { _BecaPag = value; }
        }

        private string _RecargoPag;
        public string RecargoPag
        {
            get { return _RecargoPag; }
            set { _RecargoPag = value; }
        }

         private string _nombre;
         public string nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

         private string _Descripcion;
         public string Descripcion
        {
            get { return _Descripcion; }
            set { _Descripcion = value; }
        }

        

         public Decimal PagoOportuno
         {
             get { if (_Concepto == "Inscripcion") return decimal.Parse("0.0"); else if (_PagoOportunoPag != null) return decimal.Parse(_PagoOportunoPag); else if (!ConPagoOportuno) return decimal.Parse("0"); else return Monto.PagoOportuno; }
         }
        
        public Decimal Recargo
        {
            get { if (_Concepto == "Inscripcion") return decimal.Parse("0.0"); else if (_RecargoPag != null) return decimal.Parse(_RecargoPag); else if (!ConRecargo) return decimal.Parse("0"); else return Monto.MontoRecargo; }
        }

        public Decimal Beca
        {
            get { if (_Concepto == "Inscripcion") return decimal.Parse("0.0"); else if (_BecaPag != null) return decimal.Parse(_BecaPag); else return Monto.MontoMensual * Alumno.PorcentajeVeca / 100; }
        }


        public Decimal Monto2
        {
            get { if (_Concepto == "Inscripcion") return Monto.Inscripcion; else if (MontoPag != null) return decimal.Parse(MontoPag); else return Monto.MontoMensual; }
        }

        public Decimal Total
        {
            get { if (_Concepto == "Inscripcion") return Monto.Inscripcion; else if (MontoPag != null) return decimal.Parse(MontoPag) - decimal.Parse(BecaPag) + decimal.Parse(RecargoPag); else return Monto.MontoMensual + Recargo - Beca - PagoOportuno; }
        }


    }
}
